#ifndef DUALLIST_H
#define DUALLIST_H

typedef struct _tag_DualLinkNode DualLinkNode;
struct _tag_DualLinkNode{
    DualLinkNode* prev;
    DualLinkNode* next;
};

typedef void DualLink;

DualLink* DualLink_Create();

void DualLink_Destroy(DualLink *list);
void DualLink_Clear(DualLink* list);
int DualLink_Length(DualLink* list);
int DualLink_Insert(DualLink* list,DualLinkNode* node,int pos);

DualLinkNode *DualLink_Get(DualLink* list,int pos);
DualLinkNode *DualLink_Delete(DualLink* list,int pos);

DualLinkNode *DualLink_Current(DualLink* list);
DualLinkNode *DualLink_Reset(DualLink* list);
DualLinkNode *DualLink_Next(DualLink* list);
DualLinkNode *DualLink_Prev(DualLink* list);
DualLinkNode *DualLink_DeleteNode(DualLink* list,DualLinkNode *node);



#endif // DUALLIST_H
